home *** CD-ROM | disk | FTP | other *** search
/ Almathera Ten Pack 3: CDPD 3 / Almathera Ten on Ten - Disc 3: CDPD3.iso / ab20 / unarced / datacomm / vlt / rexx / autowrap.vlt < prev    next >
Text File  |  1995-03-17  |  1KB  |  66 lines

  1. /** AutoWrap.vlt
  2. *
  3. *   Example program to intercept keystrokes.
  4. *   This one implements automatic wrapping.
  5. *
  6. **/
  7.  
  8. margincol = 72
  9. /*
  10. *   Open a port
  11. */
  12. mp = openport(MARGIN_BELL)
  13. /*
  14. *   Tell VLT to send us stuff
  15. */
  16. "wedge keystrokes MARGIN_BELL"
  17. /*
  18. *   Loop until quitflag is 1, waiting for packets
  19. */
  20. do forever
  21.    if quitflag = 1 then leave
  22.    t = waitpkt(MARGIN_BELL)
  23. /*
  24. *   We got a number of packets. Loop over all of them.
  25. */
  26.    do ff = 1
  27.       p = getpkt(MARGIN_BELL)
  28.       if c2d(p) = 0 then leave ff
  29.       line = getarg(p)
  30. /*
  31. *   Got something. Find out what...
  32. */
  33.       parse var line command code qual iaddr char .
  34. /*
  35. *   If we got an "esc", quit.
  36. */
  37.       if char = '1B'x then do
  38.          quitflag = 1
  39.          "$1: BEEP; delay .7; BEEP; delay .7; BEEP"
  40.       end
  41. /*
  42. *   Else check the current cursor x position. Send VLT a BEEP command if it
  43. *   is at the margin column.
  44. */
  45.       else do
  46.          "extract x"
  47.          if VLT.x = margincol then do
  48.             "extract reviewlineatcursor"
  49.             s = reverse(VLT.reviewlineatcursor)
  50.             n = index(s, " ")
  51.             if n > 0 then do
  52.                "send ("copies('08'x, n)")"
  53.                "emit ("copies('08'x, n)")"
  54.                if n > 1 then do
  55.                   "send (*R"reverse(substr(s, 1, n - 1))")"
  56.                   "emit (*R"reverse(substr(s, 1, n - 1))")"
  57.                end
  58.             end
  59.          end
  60.       end
  61.       t = reply(p, 1)
  62.    end
  63. end
  64.  
  65. call PostMsg()
  66.